﻿<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
		xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" 
		xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
		targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" 
		elementFormDefault="qualified"
        attributeFormDefault="unqualified"
        >

	<!-- Schema documentation -->
	<annotation>
		<documentation>
			This schema definition defines block inline types for the CS Schema.
			This schema is part of the base layer.			
		</documentation>
	</annotation>

	<!-- include and import declarations -->
	<include schemaLocation="inline.xsd"/>
	
	<!-- Element declarations -->
	<element name="code">
		<annotation>
			<documentation>
				The code element describes a code fragment.
			</documentation>
			<appinfo>
			    <doc:localizable>false</doc:localizable>
				<doc:type>paragraph</doc:type>
			</appinfo>
		</annotation>
		<complexType mixed="true">
			<choice minOccurs="0" maxOccurs="unbounded">
	        		<element name="legacyItalic" type="maml:textType" />
	        		<element name="codeFeaturedElement" type="maml:textType" />
					<element ref="maml:placeholder"/>
				<element name="comment" type="string" >
					<annotation>
						<documentation>
							The comment element allows for the description of code/developer 
							comments within a code block.
						</documentation>
						<appinfo>
						    <doc:localizable>true</doc:localizable>
				            <doc:type>paragraph</doc:type>
				        </appinfo>
					</annotation>
				</element>
			</choice>
			<attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
			<attribute name="language" type="maml:devLanguagesType">
				<annotation>
					<documentation>
						The language attribute describes the programming language used in a code sample or
						some other programattic structure.
					</documentation>
				</annotation>
			</attribute>
		</complexType>
	</element>
	
	<simpleType name="codeReferenceStringType">
        <restriction base="token">
        </restriction>
    </simpleType>

    <complexType name="codeReferenceType" mixed="false">
        <simpleContent>
            <extension base="maml:codeReferenceStringType">
            </extension>
        </simpleContent>
    </complexType>

    <element name="codeReference" type="maml:codeReferenceType">
        <annotation>
            <documentation>
            This element holds a reference to a block of code.
            </documentation>
            <appinfo>
                <doc:localizable>false</doc:localizable>
				<doc:type>paragraph</doc:type>
			</appinfo>
        </annotation>
    </element>
    
    <group name="codeGroup">
        <choice>
            <element ref="maml:code"/>
            <element ref="maml:codeReference"/>
        </choice>
    </group>

	<element name="computerOutput" type="maml:inlineType">
		<annotation>
			<documentation>
				The computerOutput element describes UI or console output.
			</documentation>
			<appinfo>
			    <doc:localizable>true</doc:localizable>
				<doc:type>paragraph</doc:type>
			</appinfo>
		</annotation>
	</element>
	
	<!-- group declarations -->
	<group name="blockSoftwareGroup">
		<choice>
			<group   ref="maml:codeGroup"/>
			<element ref="maml:computerOutput"/>
		</choice>
	</group>
</schema>